﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Linq;
using System.Globalization;

namespace Servidor
{
    public partial class Principal : Form
    {

        bool RandomGenerado = false;
        dbEntities db = new dbEntities();
        int CantJuegos = 0;
        int i = 0;
        List<Juego> ListaDeJuegos = new List<Juego>(); 

        public Principal()
        {
            InitializeComponent();
        }

        private void Principal_Load(object sender, EventArgs e)
        {
            try
            {
                 /* Textos texto1 = new Textos();
                 Textos texto2 = new Textos();
                 Textos texto3 = new Textos();
                 texto1.IdTextos = 1;
                 texto1.Texto = "juga y Gana con nosotros! Hoy puede ser Millonario!!!";
                 db.AddToTextos(texto1);
                 db.SaveChanges();
                 texto2.IdTextos = 2;
                 texto2.Texto = "Reserve su billete de navidad";
                 db.AddToTextos(texto2);
                 db.SaveChanges();
                 texto3.IdTextos = 3;
                 texto3.Texto = "Tarjetas - Saldo Virtual - Impresiones - Cd - DVD - Penddrive";
                 db.AddToTextos(texto3);
                 db.SaveChanges();*/

                // Cargo la primera pantalla

                //LblTexto3.Text = texto.First();
                Cursor.Hide();
                PrimeraPantalla();

                
            }
            catch
            {

            }
        }
        private void TmTexto3_Tick(object sender, EventArgs e)
        {
            LblTexto4.Location = new Point(LblTexto4.Location.X + 10, LblTexto4.Location.Y);

            if (LblTexto4.Location.X > this.Width)
            {
                LblTexto4.Location = new Point(0 - LblTexto4.Width, LblTexto4.Location.Y);
            }
        }

        public void PrimeraPantalla()
        {
            this.BackgroundImage = Properties.Resources._1;
            CargarTextosPrimerPantalla();
            OcultarTextosNumAleatorios();
            OcultarTextosTerceraPantalla();
            MostrarTextosPrimerPantalla();
            CargarJuegosDelDia();
            TmSegundaPantalla.Start();
            TmTexto3.Start();
        }

        public void CargarTextosPrimerPantalla()
        {
            // Mapeo la DB
            this.db = new dbEntities();

            // Cargo el primer Texto
            var textoaux1 = from txt in db.Textos
                            where txt.IdTextos == 1
                            select txt.Texto;
 
            LblTexto1.Text = textoaux1.First();

            // Cargo el segundo texto
            var textoaux2 = from txt in db.Textos
                            where txt.IdTextos == 2
                            select txt.Texto;

            LblTexto2.Text = textoaux2.First();

            // Cargo el tercer Texto
            var textoaux3 = from txt in db.Textos
                            where txt.IdTextos == 3
                            select txt.Texto;

            LblTexto3.Text = textoaux3.First();

            // Cargo el Cuarto Texto
            var textoaux4 = from txt in db.Textos
                            where txt.IdTextos == 4
                            select txt.Texto;

            LblTexto4.Text = textoaux4.First();

        }

        public void OcultarTextosPrimerPantalla()
        {
            LblTexto1.Visible = false;
            LblTexto2.Visible = false;
            LblTexto3.Visible = false;

        }

        public void OcultarTextosNumAleatorios()
        {
            LblTextoNumerosAleatorios.Visible = false;
            LblNum1.Visible = false;
            LblNum2.Visible = false;
            LblNum3.Visible = false;
            LblNum4.Visible = false;
            LblNum5.Visible = false;
            LblNum6.Visible = false;

           }

        public void MostrarTextosPrimerPantalla()
        {
            LblTexto1.Visible = true;
            LblTexto2.Visible = true;
            LblTexto3.Visible = true;
        }

        public void MostrarTextosNumAleatorios()
        {
            LblTextoNumerosAleatorios.Visible = true;
            LblNum1.Visible = true;
            LblNum2.Visible = true;
            LblNum3.Visible = true;
            LblNum4.Visible = true;
            LblNum5.Visible = true;
            LblNum6.Visible = true;

        }

        public void OcultarTextosTerceraPantalla()
        {
            LblNombre.Visible = false;
            LblJuega.Visible = false;
            LblHora.Visible = false;
            LblPozo.Visible = false;
            LblPrecio.Visible = false;
            LblAciertos.Visible = false;
            LblSorteosExtraordinarios.Visible = false;
            LblGanador1.Visible = false;
            LblJuega2.Visible = false;
            lblPozo2.Visible = false;
            LblUltimosGanadores.Visible = false;
            LblBoletasLocas.Visible = false;
            PicLogoJuego.Visible = false;
            TmIntermitente.Stop();
        }

        public void MostarTextosTerceraPantalla()
        {
            LblNombre.Visible = true;
            LblJuega.Visible = true;
            LblHora.Visible = true;
            LblPozo.Visible = true;
            LblPrecio.Visible = true;
            LblAciertos.Visible = true;
            LblSorteosExtraordinarios.Visible = true;
            LblGanador1.Visible = true;
            LblUltimosGanadores.Visible = true;
            LblBoletasLocas.Visible = true;
            LblJuega2.Visible = true;
            lblPozo2.Visible = true;
            PicLogoJuego.Visible = true;
            TmIntermitente.Start();
        }

        public void TextosTipo1()
        {
            LblAciertos.Visible = false;
            LblJuega2.Visible = false;
            lblPozo2.Visible = false;
            LblSorteosExtraordinarios.Visible = false;
            LblUltimosGanadores.Visible = true; ;
            LblBoletasLocas.Visible = true;
            LblGanador1.Visible = true;
            LblPrecio.Visible = true;
            LblPozo.Visible = true;
            LblJuega.Visible = true;
            LblHora.Visible = true;
        }

        public void TextosTipo2()
        {
            LblJuega2.Visible = true;
            lblPozo2.Visible = true;
            LblAciertos.Visible = true;
            LblSorteosExtraordinarios.Visible = true;
            LblUltimosGanadores.Visible = false; ;
            LblBoletasLocas.Visible = false;
            LblGanador1.Visible = false;
            LblPrecio.Visible = false;
            LblPozo.Visible = false;
            LblJuega.Visible = false;
            LblHora.Visible = false;
        }


        public void LogoJuego(string Nombre)
        {
            switch (Nombre)
            {
                case "QUINI 6": PicLogoJuego.Image = Servidor.Properties.Resources.quini6;
                    break;
                case "BRINCO": PicLogoJuego.Image = Servidor.Properties.Resources.brinco;
                    break;
                case "LOTO": PicLogoJuego.Image = Servidor.Properties.Resources.loto;
                    break;
                case "LOTO 5": PicLogoJuego.Image = Servidor.Properties.Resources.loto5;
                    break;
                case "POCEADA FEDERAL": PicLogoJuego.Image = Servidor.Properties.Resources.Poceada_Federal;
                    break;
                case "TELEKINO": PicLogoJuego.Image = Servidor.Properties.Resources.Telekino;
                    break;
                case "JUGA CON MARADONA": PicLogoJuego.Image = Servidor.Properties.Resources.Juga_con_Maradona;
                    break;
                case "MONO BINGO": PicLogoJuego.Image = Servidor.Properties.Resources.Mono_Bingo;
                    break;
                
            }
        }
        public void GenerarNumerosFavoritos()
        {
            if (RandomGenerado == false)
            {
                // Genero los numeros aleatorios
                Random Aleatorio = new Random();
                int num1 = Aleatorio.Next(30, 50);
                int num2 = Aleatorio.Next(20, 30);
                int num3 = Aleatorio.Next(60, 80);
                int num4 = Aleatorio.Next(50, 60);
                int num5 = Aleatorio.Next(0, 10);
                int num6 = Aleatorio.Next(10, 20);

                // Cargo los numeros generados en los labels
                LblNum1.Text = Convert.ToString(num1);
                LblNum2.Text = Convert.ToString(num2);
                LblNum3.Text = Convert.ToString(num3);
                LblNum4.Text = Convert.ToString(num4);
                LblNum5.Text = "0" + Convert.ToString(num5);
                LblNum6.Text = Convert.ToString(num6);

                RandomGenerado = true;
            }
        }

        public void CargarJuegosDelDia()
        {
            int DiaDeLaSemana = Convert.ToInt32(DateTime.Today.DayOfWeek);

            this.db = new dbEntities();

            // Selecciono todos los juegos para este dia
            var juegos = from j in this.db.Juego
                         join d in this.db.Dias on
                         j.IdJuego equals d.Juego.IdJuego
                         where d.Dia == DiaDeLaSemana
                         select j;


            foreach (var juego in juegos)
            {
                ListaDeJuegos.Add(juego);
            }

            // Cantidad de juegos cargados
            CantJuegos = (from j in db.Juego
                             join d in db.Dias on
                             j.IdJuego equals d.Juego.IdJuego
                          where d.Dia == DiaDeLaSemana
                             select j).Count();
        }

        private void TmSegundaPantalla_Tick(object sender, EventArgs e)
        {    
             OcultarTextosPrimerPantalla();
             this.BackgroundImage = Properties.Resources._2;
             LblTextoNumerosAleatorios.Text = "Numeros Favoritos!! Para el Día " + DateTime.Today.Date.ToShortDateString();
             GenerarNumerosFavoritos();
             MostrarTextosNumAleatorios();
             TmSegundaPantalla.Stop();
             TmTerceraPantalla.Start();

        }


        private void TmIntermitente_Tick(object sender, EventArgs e)
        {
            if (LblPrecio.ForeColor == Color.Black)
            {
                LblPrecio.ForeColor = Color.Red;
            }
            else
            {
                LblPrecio.ForeColor = Color.Black;
            }

            if (LblBoletasLocas.ForeColor == Color.Black)
            {
                LblBoletasLocas.ForeColor = Color.Red;
            }
            else
            {
                LblBoletasLocas.ForeColor = Color.Black;
            }
        }

        


        private void TmTerceraPantalla_Tick(object sender, EventArgs e)
        {   
            OcultarTextosNumAleatorios();
            MostarTextosTerceraPantalla();
            LblGanador1.Location = new Point(44, 484);
 
            if (i < CantJuegos)
            {
                switch (ListaDeJuegos[i].Tipo)
                {
                    case 1:
                        TextosTipo1();
                        this.BackgroundImage = Properties.Resources._3;
                        LogoJuego(ListaDeJuegos[i].Nombre.ToUpper());
                        if (ListaDeJuegos[i].Nombre.ToUpper() == "BRINCO")
                        {

                            LblUltimosGanadores.Text = "SUELDOS";
                        }
                        else
                        {
                            LblUltimosGanadores.Text = "Ultimos Ganadores";
                        }
                        
                        LblNombre.Text = ListaDeJuegos[i].Nombre;
                        LblJuega.Text = Convert.ToString(ListaDeJuegos[i].Fecha).Trim().Remove(10);
                        LblHora.Text = Convert.ToString(ListaDeJuegos[i].HoraCierre).Trim().Remove(0, 10).Remove(6);
                        Double pozo = Convert.ToDouble(ListaDeJuegos[i].Pozo);
                        LblPozo.Text ="$" +  pozo.ToString("N0", new NumberFormatInfo()
                                            {
                                                NumberGroupSizes = new[] { 3 },
                                                NumberGroupSeparator = ".",
                                            });
                        TmGanador.Start();
                        LblBoletasLocas.Text = "HAY BOLETAS 'LOCAS' - HAGA SU " + ListaDeJuegos[i].Nombre + " FIJO";
                        LblSorteosExtraordinarios.Text = "Ultimos Ganadores:";
                        LblPrecio.Text = "Con solo $" + Convert.ToString(ListaDeJuegos[i].Precio) + " Puede cambiar tu vida!";
                        LblGanador1.Text = ListaDeJuegos[i].Ganadores;
                        break;
                    case 2:
                        TmGanador.Stop();
                        TextosTipo2();
                        LogoJuego(ListaDeJuegos[i].Nombre.ToUpper());
                        this.BackgroundImage = Properties.Resources._4;
                        LblNombre.Text = ListaDeJuegos[i].Nombre;
                        LblJuega2.Text = Convert.ToString(ListaDeJuegos[i].Fecha).Trim().Remove(10);
                        Double pozo2 = Convert.ToDouble(ListaDeJuegos[i].Pozo);
                        lblPozo2.Text = "$" + pozo2.ToString("N0", new NumberFormatInfo()
                                            {
                                                NumberGroupSizes = new[] { 3 },
                                                NumberGroupSeparator = ".",
                                            });
                        LblSorteosExtraordinarios.Text = "Sorteos Extraordinarios";
                        LblAciertos.Text = "Ganas con solo " + Convert.ToString(ListaDeJuegos[i].Aciertos) + " Aciertos";
                        
                        break;
                                          
                }
                i++;
                
            }

            else
            {
                TmTerceraPantalla.Stop();
                ListaDeJuegos.Clear();
                PrimeraPantalla();
                i = 0;
            }
           
            

        }

        private void TmGanador_Tick(object sender, EventArgs e)
        {

            LblGanador1.Location = new Point(LblGanador1.Location.X - 10, LblGanador1.Location.Y);

            if (LblGanador1.Location.X < - this.Width)
            {
                LblGanador1.Location = new Point(this.Width, LblGanador1.Location.Y);
            }
        }

       

    }
}
